import java.util.ArrayList;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        BST<Integer> bst = new BST<>();
//        int [] nums = {5, 3, 6, 8, 4, 2};
//        int [] nums = {10,11,6,7,8,9};
        // 如果根节点就是当前二分搜索树最小值时
        int [] nums = {4,7,6,9};
        for (int num : nums){
            bst.add2(num);
        }
//        System.out.print("是否包含6?");
//        System.out.println(bst.contains(6));
//
//
//        System.out.println("递归前序遍历");
//        bst.preOrder();
//        System.out.println();
//
//        System.out.println("非递归前序遍历");
//        bst.preOrderNR();
//        System.out.println();
//
        System.out.println("中序遍历");
        bst.inOrder();
        System.out.println();
//
//        System.out.println("后序遍历");
//        bst.postOrder();
//        System.out.println();
//
        System.out.println("层序遍历");
        bst.levelOrder();

//        System.out.println(bst);

        ///////////////////////////
        //            5          //
        //          /   \        //
        //         3     6       //
        //        / \   / \      //
        //       2  4      8     //
        ///////////////////////////

//        System.out.println("删除最小元素并返回");
//        Integer min = bst.removeMin();
//        System.out.println(min);
//
//        System.out.println("删除后层序遍历");
//        bst.levelOrder();
//
//        System.out.println("删除最大元素并返回");
//        Integer max = bst.removeMax();
//        System.out.println(max);
//        System.out.println("删除后层序遍历");
//        bst.levelOrder();

        bst.remove(6);
        System.out.println("删除后层序遍历");
        bst.levelOrder();

    }
}
